
function randomString(len) {
    len = len || 32;
    var $chars = 'ABCDEFGHJKMNPQRSTWXYZ012345678';
    var maxPos = $chars.length;
    var pwd = '';
    for (i = 0; i < len; i++) {
        pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
    }
    return pwd;
}

var monKeyKey = randomString(16);
var monKeyIv = randomString(16);

var monkeyCookies = {
    //设置cookie
    set: function(c_name,value,expiredays){
        var exdate=new Date()
        exdate.setDate(exdate.getDate()+expiredays)
        document.cookie=c_name+ "=" +escape(value)+
            ((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
    },

    get: function(c_name){
        if (document.cookie.length>0){
            c_start=document.cookie.indexOf(c_name + "=")
            if (c_start!=-1){
                c_start=c_start + c_name.length+1
                c_end=document.cookie.indexOf(";",c_start)
                if (c_end==-1) c_end=document.cookie.length
                return unescape(document.cookie.substring(c_start,c_end));
            }
        }
        return ""
    }
};
//---------------配置token url---------------
(function (_url) {
    var tokenUrl = _url || '/eggReady';
    var csrftoken = monkeyCookies.get('csrfToken');

    if(!csrftoken){
        $.ajax({
            url: tokenUrl,
            type:'post',
            dataType:'json',
            complete:function () {
                csrftoken = monkeyCookies.get('csrfToken');
            }
        })
    }

    function csrfSafeMethod(method) {
        // these HTTP methods do not require CSRF protection
        return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
    }

    $.ajaxSetup({
        beforeSend: function(xhr, settings) {
            if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
                xhr.setRequestHeader('x-csrf-token', csrftoken);
            }

            xhr.setRequestHeader('monkey-key', monKeyKey);
            xhr.setRequestHeader('monkey-iv', monKeyIv);
        },
    });
})();
